#include<iostream>
#include<stack>
#include<vector>
#include<algorithm>
using namespace std;
const int N=3e6+10;
int nums[N];
int ret[N];
//左边第一个比我小的
void text1(int n)
{
	stack<int> st;
	for(int i=1;i<=n;i++)
	{
		while(!st.empty()&&nums[st.top()]<=nums[i])
		{
			st.pop();
		}
		if(st.empty())
		{
			cout<<0<<endl;
		}
		else
		{
			cout<<st.top()<<endl;
		}
		st.push(i);
	}
}

//左边第一个比我大的
void text2(int n)
{
	stack<int> st;
	for(int i=1;i<=n;i++)
	{
		while(!st.empty()&&nums[st.top()]>=nums[i])
		{
			st.pop();
		}
		if(st.empty())
		{
			cout<<0<<endl;
		}
		else
		{
			cout<<st.top()<<endl;
		}
		st.push(i);
	}
}

//右边第一个比我大的
void text3(int n)
{
	
	stack<int> st;
	for(int i=n;i>=1;i--)
	{
		while(!st.empty()&&nums[st.top()]<=nums[i])
		{
			st.pop();
		}
		if(st.empty())
		{
			ret[i]=0;
		}
		else
		{
			ret[i]=st.top();
		}
		st.push(i);
	}
	for(int i=1;i<=n;i++)
	{
		cout<<ret[i]<<" ";
	}
	cout<<endl;
}
int main()
{
	int n;cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>nums[i];
	}
	text3(n);
}